package cn.tedu.elasticsearch.repository;

import cn.tedu.elasticsearch.entity.Item;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ItemRepository extends ElasticsearchRepository<Item,Long> {
    //当前接口继承了SpringDataES提供的父接口ElasticsearchRepository
    //一旦继承了，效果就是会自动为指定的实体类生成增删改查的方法
    //ElasticsearchRepository<[实体类类型],[实体类主键类型]>

    //自定义单条件查询
    /*
      query：表示当前方法为查询方法，类似sql中的select
      Items/Item：表示要查询的实体类 ，不带s返回单个对象，带s返回集合类型
      By：标识开始设置条件的 关键字，类似sql中的where
      Title：要查询的字段
      Matches：要执行的查询操作，Matches表示执行查询支持分词的字符串，类似sql中的like
     */
    Iterable<Item> queryItemsByTitleMatches(String title);
    //多条件查询
    Iterable<Item> queryItemsByTitleMatchesOrBrandMatches(String title,String brand);
    //排序查询
    Iterable<Item> queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc(String title,String brand);
    //分页查询
    Page<Item> queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc(
            String title, String brand, Pageable pageable
            );
}
